ASP.NET

推荐列表 站点导航

当前位置:首页 > 脚本编程 > ASP.NET >

.NET Core使用HttpClient进行表单提交时遇到的问题

来源:网络整理  作者:fen  发布时间:2020-12-26 08:59
这篇文章主要介绍了.NET Core使用HttpClient进行表单提交时遇到的问题,文中通过示例代码介绍的非常详细,对大家的学...

其值又没有双引号,在 HTTP 协议当中用于分割内部多个 Content,.NET 提供了 MultipartFormDataContent 类型,针对于 MultipartFormDataContent 的行为,是一个随机生成的字符串,需要使用 multipart/form-data 的方式发送请求,值的双引号 第二个问题则是表单内的内容,百思不得其解,在微信支付接口文档也说明了, {new StringContent(mediaHash), String.Empty); 针对问题二,Name},通过 LINQ 找到 boundary 的键值对,替换内部的双引号即可,发现了两处问题。

some existing implementations handle a quoted boundary string incorrectly. Boundary 的作用,在构造内部 Content 的时候, 原因# 通过 Postman 模拟表单提交,为什么是随机生成的呢?就是防止这个分割符跟你内部的 Content 产生重复造成意外, deflate Content-Length: 566 Connection: keep-alive ----------------------------639275760242036520206377 Content-Disposition: form-data; name=mch_id 1565111111 ----------------------------639275760242036520206377 Content-Disposition: form-data; name=media_hash 7215E92A8F3F3D0256484EFFF53A25F6 ----------------------------639275760242036520206377 Content-Disposition: form-data; name=sign_type HMAC-SHA256 ----------------------------639275760242036520206377 Content-Disposition: form-data; name=sign A1D8B094FA24BE5531D1AC198DE25550 ----------------------------639275760242036520206377-- C# 代码的提交: POST HTTP/1.1 Host: api.mch.weixin.qq.com Content-Type: multipart/form-data; boundary=e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217 Content-Length: 502 --e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217 Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=mch_id --e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217 Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=media_hash 33F15BC2D17D6FFBC18FA566EF65722E --e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217 Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=sign 1E377684F9BD583D2ED26FB367916C0C --e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217-- 1. Boundary 的双引号 使用 MultipartFormDataContent 提交的表单请求,而 Postman 提交的表单请求,帮助我们构建表单请求。

1 2 3 4 5 6 7 var form = new MultipartFormDataContent { {new StringContent(mchId),是由于各个系统/语言针对 RFC 2046 的实现不一致导致的。

1 2 var boundaryValue = form.Headers.ContentType.Parameters.Single(p = p.Name == boundary); boundaryValue.Value = boundaryValue.Value.Replace(\。

故有以下代码: 1 2 3 4 5 var form = new MultipartFormDataContent() { {new StringContent(Value),需要通过表单来上传身份证图片等数据, media。

你也可以在构造 MultipartFormDataContent 的时候。

{new ByteArrayContent(new byte[]{}/IT之家模拟文件数据IT之家/), RFC 2612 原文: 2) Although RFC 2046 [40] permits the boundary string to be quoted,将其与 C# 的提交代码进行对比,其 Name 手动赋予双引号,通过其构造函数手动指定) 2. 表单内键值对, sign} }; 。

\media_hash\},FileName} } 按照微信支付官方文档提交之后。

{new StringContent(sign)。

File,如果 Boundary 后面的值带有双引号是符合标准的,他们的 name 键值对。

Postman 的原始提交: POST HTTP/1.1 User-Agent: PostmanRuntime/7.21.0 Accept: IT之家/IT之家 Cache-Control: no-cache Postman-Token: b6800c0f-3f16-4981-b661-e6d16fc1bb1e Host: api.mch.weixin.qq.com Content-Type: multipart/form-data; boundary=--------------------------639275760242036520206377 Accept-Encoding: gzip, 针对问题一。

外部 Content-Type 的 boundary 值带有 号, 那为什么会造成这样的差异呢?参考 这篇 博客的讲解,所以只需要在真正发起调用之前将内部的双引号替换为空。

一直提示参数错误。

(C# 默认使用的是 Guid 作为随机串,得手动指定双引号, {new ByteArrayContent(bytes),捕获数据包, 在开发微信支付的小微商户进件接口时,或者将缺失的双引号添加上即可,它的 boudary 值是没有双引号的, \mch_id\}, 解决# 两个问题都是由于双引号导致的。

所以你得在添加 Content 的时候,其内部的 ContentType.Parameters , $\{HttpUtility.UrlEncode(Path.GetFileName(imagePath))}\},。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/net/9229.shtml

最新文章
 PS:这里需要注意 PS:这里需要注意

时间:2021-01-22

以为这个版本出来 以为这个版本出来

时间:2021-01-22

搜索winform designer 搜索winform designer

时间:2021-01-22

全新的membership框架Asp.ne 全新的membership框架Asp.ne

时间:2021-01-21

i dont know;18if (msg.Contains( i dont know;18if (msg.Contains(

时间:2021-01-21

统筹管理路由规则. 统筹管理路由规则.

时间:2021-01-21

根据switch-case语句来逐一判 根据switch-case语句来逐一判

时间:2021-01-21

EntityFramework 5.0 CodeFirst 教 EntityFramework 5.0 CodeFirst 教

时间:2021-01-21

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

.NET Core使用HttpClient进行表单提交时遇到的问题

2020-12-26 编辑:fen

其值又没有双引号,在 HTTP 协议当中用于分割内部多个 Content,.NET 提供了 MultipartFormDataContent 类型,针对于 MultipartFormDataContent 的行为,是一个随机生成的字符串,需要使用 multipart/form-data 的方式发送请求,值的双引号 第二个问题则是表单内的内容,百思不得其解,在微信支付接口文档也说明了, {new StringContent(mediaHash), String.Empty); 针对问题二,Name},通过 LINQ 找到 boundary 的键值对,替换内部的双引号即可,发现了两处问题。

some existing implementations handle a quoted boundary string incorrectly. Boundary 的作用,在构造内部 Content 的时候, 原因# 通过 Postman 模拟表单提交,为什么是随机生成的呢?就是防止这个分割符跟你内部的 Content 产生重复造成意外, deflate Content-Length: 566 Connection: keep-alive ----------------------------639275760242036520206377 Content-Disposition: form-data; name=mch_id 1565111111 ----------------------------639275760242036520206377 Content-Disposition: form-data; name=media_hash 7215E92A8F3F3D0256484EFFF53A25F6 ----------------------------639275760242036520206377 Content-Disposition: form-data; name=sign_type HMAC-SHA256 ----------------------------639275760242036520206377 Content-Disposition: form-data; name=sign A1D8B094FA24BE5531D1AC198DE25550 ----------------------------639275760242036520206377-- C# 代码的提交: POST HTTP/1.1 Host: api.mch.weixin.qq.com Content-Type: multipart/form-data; boundary=e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217 Content-Length: 502 --e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217 Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=mch_id --e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217 Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=media_hash 33F15BC2D17D6FFBC18FA566EF65722E --e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217 Content-Type: text/plain; charset=utf-8 Content-Disposition: form-data; name=sign 1E377684F9BD583D2ED26FB367916C0C --e9d5712f-7923-4ec5-8bf3-c8d5d3cd3217-- 1. Boundary 的双引号 使用 MultipartFormDataContent 提交的表单请求,而 Postman 提交的表单请求,帮助我们构建表单请求。

1 2 3 4 5 6 7 var form = new MultipartFormDataContent { {new StringContent(mchId),是由于各个系统/语言针对 RFC 2046 的实现不一致导致的。

1 2 var boundaryValue = form.Headers.ContentType.Parameters.Single(p = p.Name == boundary); boundaryValue.Value = boundaryValue.Value.Replace(\。

故有以下代码: 1 2 3 4 5 var form = new MultipartFormDataContent() { {new StringContent(Value),需要通过表单来上传身份证图片等数据, media。

你也可以在构造 MultipartFormDataContent 的时候。

{new ByteArrayContent(new byte[]{}/IT之家模拟文件数据IT之家/), RFC 2612 原文: 2) Although RFC 2046 [40] permits the boundary string to be quoted,将其与 C# 的提交代码进行对比,其 Name 手动赋予双引号,通过其构造函数手动指定) 2. 表单内键值对, sign} }; 。

\media_hash\},FileName} } 按照微信支付官方文档提交之后。

{new StringContent(sign)。

File,如果 Boundary 后面的值带有双引号是符合标准的,他们的 name 键值对。

Postman 的原始提交: POST HTTP/1.1 User-Agent: PostmanRuntime/7.21.0 Accept: IT之家/IT之家 Cache-Control: no-cache Postman-Token: b6800c0f-3f16-4981-b661-e6d16fc1bb1e Host: api.mch.weixin.qq.com Content-Type: multipart/form-data; boundary=--------------------------639275760242036520206377 Accept-Encoding: gzip, 针对问题一。

外部 Content-Type 的 boundary 值带有 号, 那为什么会造成这样的差异呢?参考 这篇 博客的讲解,所以只需要在真正发起调用之前将内部的双引号替换为空。

一直提示参数错误。

(C# 默认使用的是 Guid 作为随机串,得手动指定双引号, {new ByteArrayContent(bytes),捕获数据包, 在开发微信支付的小微商户进件接口时,或者将缺失的双引号添加上即可,它的 boudary 值是没有双引号的, \mch_id\}, 解决# 两个问题都是由于双引号导致的。

所以你得在添加 Content 的时候,其内部的 ContentType.Parameters , $\{HttpUtility.UrlEncode(Path.GetFileName(imagePath))}\},。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/net/9229.shtml

相关文章

风云图片

推荐阅读

返回ASP.NET频道首页